<html xmlns="http://www.w3.org/1999/xhtml" 
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui"  
      xmlns:pe="http://primefaces.org/ui/extensions"  
      xmlns:h="http://java.sun.com/jsf/html">
    <h:head>
        <title>
            <h:outputText value="Sistema de Seguridad de Aplicaiones - SSA" />
        </title>
    </h:head>
    <h:body>
        <ui:composition template="/WEB-INF/facelets/templates/mainLayout.xhtml">            
            <ui:define name="menuPrincipal">
                <ui:include src="/frmMenu.xhtml"/>
            </ui:define>
             <ui:define name="content" >
                 <p:blockUI block=":frmGestionarPerfiles:panBuscaPerfiles" trigger=":frmGestionarPerfiles:buscarButton" widgetVar="blkPanel">
                    Espere mientras se cargan los datos<br /> 
                    <p:graphicImage value="/resource/images/loading.gif" style="width: 65px; height: 50px;"/>
                </p:blockUI>
                 <h:form id="frmGestionarPerfiles" onkeypress="if (event.keyCode == 13) return false;">
                     <p:growl showSummary="false" showDetail="true" id="msjFiltro"/>
                     <p:panel id="panPerfiles" header="Administración de Perfiles" >
                         <table style="width:100%;" >
                            <thead>
                                <tr>
                                    <td>
                                        <br/>
                                    </td>
                                </tr>
                            </thead>  
                            <tbody>
                                <tr>
                                    <td>
                                    </td>
                                </tr>
                                <tr>
                                    <td>
                                        <p:menubar style="width: 99%;" id="menuOpciones">
                                            <p:menuitem value="Nuevo" icon="ui-icon-person" actionListener="#{perfilController.nuevo}"
                                                        update=":dlgDetallePerfil, :frmRegistroPerfil, msjFiltro" >
                                            </p:menuitem>
                                            <p:menuitem value="Modificar" icon="ui-icon-pencil" actionListener="#{perfilController.load}"
                                                        update=":dlgDetallePerfil, :frmRegistroPerfil, msjFiltro">
                                            </p:menuitem>
                                            <p:menuitem value="Configurar Opciones" icon="ui-icon-wrench"  actionListener="#{perfilController.loadOpciones}"
                                                        update=":dlgGestionarOpcionesPerfil, :frmConfiguraOpciones, :frmConfiguraOpciones:panPerfilesOpcion, msjFiltro">
                                            </p:menuitem>
                                        </p:menubar>
                                    </td>
                                </tr>
                                <tr>
                                    <td>
                                        <div style="height: 340px;width: 410px;overflow:hidden;float: left;">
                                            <p:tree id="docTree" value="#{perfilController.moduloTree}" var="per" style="width: 400px;height: 333px;overflow:hidden;" 
                                                    selectionMode="single" selection="#{perfilController.selectedModuloNode}" 
                                                    dynamic="true"> 
                                                <p:ajax event="select" update=":frmGestionarPerfiles:docTree, :frmGestionarPerfiles:grdPerfiles" oncomplete="blkPanel.hide();"
                                                        onstart="blkPanel.show();" listener="#{perfilController.onNodeSelect}" /> 
                                                <p:treeNode expandedIcon="ui-icon-folder-open"  
                                                        collapsedIcon="ui-icon-folder-collapsed" >
                                                    <h:outputText value="#{per.txtModulo}" />
                                                </p:treeNode>
                                            </p:tree>
                                        </div>
                                        <div style="float: left;width: 830px;height: 340px">
                                            <p:panel id="panBuscaPerfiles" style="width: 827px;height: 330px;">
                                                <table style="width:100%" >
                                                    <thead>
                                                        <tr>
                                                            <td>
                                                                <table style="width:55%" cellpadding="5" cellspacing="8">
                                                                    <tr>
                                                                        <td>
                                                                            <h:outputText value="Perfil :"/> 
                                                                        </td>
                                                                        <td>
                                                                            <p:inputText id="txtBusPerfil" value="#{perfilController.txtBusquedaPerfil}" style="width: 260px;" 
                                                                                         maxlength="255">
                                                                                <pe:keyFilter regEx="/[A-ZÑ0-9- ]/i"/>
                                                                            </p:inputText>
                                                                        </td>
                                                                        <td> 
                                                                            <p:commandButton process="@this, txtBusPerfil" value="Buscar" icon="ui-icon-search"  id="buscarButton"
                                                                                             actionListener="#{perfilController.search}"
                                                                                         update=":frmGestionarPerfiles:grdPerfiles, msjFiltro"/> 
                                                                        </td>
                                                                    </tr>
                                                                </table>
                                                            </td>
                                                        </tr>
                                                    </thead>
                                                    <tbody>
                                                        <tr>
                                                            <td>
                                                                <div style="height: 260px; overflow-y: auto;overflow-x:hidden;">
                                                                    <p:dataTable id="grdPerfiles" var="item" 
                                                                                value="#{perfilController.lstPerfil}" 
                                                                                rowKey="#{item.id}" scrollHeight="250"
                                                                                selection="#{perfilController.selectedPerfil}" 
                                                                                selectionMode="single" paginator="false"
                                                                                paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
                                                                                rowsPerPageTemplate="5,10,15,20"
                                                                                emptyMessage="No se encontraron perfiles asociados."
                                                                                rowIndexVar="index">
                                                                       <p:column width="50" style="text-align: center; width: 50px" >
                                                                           <f:facet name="header">
                                                                               <h:outputText value="Id"/>
                                                                           </f:facet>
                                                                           <div style="text-align: center;" > 
                                                                               <h:outputText value="#{item.id}" >
                                                                                   <f:convertNumber pattern="0000" />
                                                                               </h:outputText>
                                                                           </div>
                                                                       </p:column>
                                                                        <p:column width="150" style="text-align: center; width: 150px">
                                                                           <f:facet name="header">
                                                                               <h:outputText value="Perfil"/>
                                                                           </f:facet>
                                                                            <h:outputText value="#{item.txtPerfil}" />
                                                                       </p:column>
                                                                       <p:column width="150" style="text-align: center; width: 150px">
                                                                           <f:facet name="header">
                                                                               <h:outputText value="Conexión"/>
                                                                           </f:facet>
                                                                           <h:outputText value="#{item.nidConexion.txtConexion}" />
                                                                       </p:column>
                                                                       <p:column width="60" style="text-align: center; width: 60px">
                                                                           <f:facet name="header">
                                                                               <h:outputText value="Activo"/>
                                                                           </f:facet>
                                                                           <p:selectBooleanCheckbox disabled="true" value="#{item.flgActivo == '1'}"/>
                                                                       </p:column>
                                                                        <p:column width="60" style="text-align: center; width: 60px">
                                                                           <f:facet name="header">
                                                                               <h:outputText value="Base"/>
                                                                           </f:facet>
                                                                            <p:selectBooleanCheckbox disabled="true" value="#{item.flgBase == '1'}"/>
                                                                       </p:column>
                                                                       <p:column width="100" style="text-align: center; width: 100px">
                                                                           <f:facet name="header">
                                                                               <h:outputText value="Tipo de Usuario"/>
                                                                           </f:facet>
                                                                           <h:outputText value="#{perfilController.mapaTipoUsuario[item.tipUsuario]}" />
                                                                       </p:column>
                                                                   </p:dataTable>
                                                                </div>
                                                            </td>
                                                        </tr>
                                                    </tbody>
                                                </table>
                                            </p:panel>
                                        </div>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                     </p:panel>
                     <p:remoteCommand name="abreConfirmacionPerfil" oncomplete="dlgConfirmacionPerfil.show()"></p:remoteCommand>
                 </h:form>
                 <p:dialog id="dlgDetallePerfil" widgetVar="wDetalleModuloPerfil" modal="true" header="#{(perfilController.esNuevo)?'Registro de Perfil':'Modificar Perfil'}" resizable="false"
                           width="600" height="380" showEffect="clip" hideEffect="fold">
                     <ui:include src="RegistroPerfil.xhtml"/>
                     <p:ajax event="close" update=":frmGestionarPerfiles:grdPerfiles" listener="#{perfilController.listar}"/> 
                 </p:dialog>
                 
                 <p:dialog id="dlgBuscaConexion" modal="true" header="Búsqueda de Conexion" 
                           widgetVar="buscaConexion" resizable="false"
                           width="670"  height="340"
                           showEffect="clip" hideEffect="fold">
                    <ui:include src="frmListarConexion.xhtml" />
                </p:dialog>
                 
                 <p:dialog id="dlgGestionarOpcionesPerfil" widgetVar="wGestionarOpcionesPerfil" modal="true" header="Configurar Opciones al Perfil" resizable="false"
                           width="1150" height="480" showEffect="clip" hideEffect="fold">
                     <ui:include src="ConfigurarOpcionesPerfil.xhtml"/>
                     <p:ajax event="close" update=":frmGestionarPerfiles:grdPerfiles"/> 
                 </p:dialog>
                 
                 <p:dialog id="dlgVerOpcionesDePerfil" modal="true" header="Estructura de Opciones Asignadas" 
                          widgetVar="verOpcionesDePerfil" resizable="false"
                          width="500" height="440"
                          showEffect="clip" hideEffect="fold">
                    <ui:include src="VerOpcionesDePerfil.xhtml" />
                </p:dialog>
                
                <p:dialog modal="true" header="Mensaje de Confirmación" widgetVar="dlgConfirmacionPerfil" resizable="false"
                           width="410" height="100" showEffect="clip" hideEffect="fold" id="dlgMensajeConfirmacionPerfil">
                     <p:panel>
                         <table>
                             <tbody>
                                 <tr>
                                     <td><span class="ui-icon ui-icon-alert ui-confirm-dialog-severity" style="margin-bottom: 10px;"></span>
                                        <h:outputLabel style="font-size: 10pt;" value="¿Desea replicar las opciones del perfil para los demás usuarios?"/>
                                    </td>
                                </tr>
                             </tbody>
                             <tfoot>
                                 <tr>
                                     <td style="text-align: center;">
                                        <p:commandButton value="Sí" onclick="dlgConfirmacionPerfil.hide()" 
                                                         oncomplete="dlgConfirmacionPerfilOK.show()" process="@this"/>
                                        <p:commandButton value="No" actionListener="#{perfilController.asignaOpcionesAlPerfil(true, false)}"
                                                         oncomplete="blkPanelPerfilOpciones.hide()" onstart="blkPanelPerfilOpciones.show()"
                                                         update=":frmConfiguraOpciones:msjConfigOpciones"
                                                         onclick="dlgConfirmacionPerfil.hide()"/>
                                     </td>
                                </tr>
                             </tfoot>
                         </table>      
                     </p:panel>
                 </p:dialog>
                 <p:dialog modal="true" header="Mensaje de Confirmación" widgetVar="dlgConfirmacionPerfilOK" resizable="false"
                           width="200" height="100" showEffect="clip" hideEffect="fold" id="dlgMensajeConfirmacionPerfilOK">
                     <p:panel>
                         <table>
                             <tbody>
                                 <tr>
                                     <td><span class="ui-icon ui-icon-alert ui-confirm-dialog-severity" style="margin-bottom: 10px;"></span>
                                     <h:outputLabel style="font-size: 10pt;" value="¿Esta seguro?"/>
                                     </td>
                                 </tr>
                             </tbody>
                             <tfoot>
                                <tr>
                                     <td style="text-align: center;">
                                         <p:commandButton value="Sí" process="@this" actionListener="#{perfilController.asignaOpcionesAlPerfil(true, true)}"
                                                          oncomplete="blkPanelPerfilOpciones.hide()" onstart="blkPanelPerfilOpciones.show()"
                                                          update=":frmConfiguraOpciones:msjConfigOpciones"
                                                          onclick="dlgConfirmacionPerfilOK.hide()"/>
                                         <p:commandButton value="No" onclick="dlgConfirmacionPerfilOK.hide()" process="@this"/>
                                     </td>
                                </tr>
                             </tfoot>
                         </table>      
                     </p:panel>
                 </p:dialog>
                 
             </ui:define>
        </ui:composition>
    </h:body>
</html>